Systems and methods for dynamic route planning in autonomous navigation

ABSTRACT

Systems and methods for dynamic route planning in autonomous navigation are disclosed. In some exemplary implementations, a robot can have one or more sensors configured to collect data about an environment including detected points on one or more objects in the environment. The robot can then plan a route in the environment, where the route can comprise one or more route poses. The route poses can include a footprint indicative at least in part of a pose, size, and shape of the robot along the route. Each route pose can have a plurality of points therein. Based on forces exerted on the points of each route pose by other route poses, objects in the environment, and others, each route poses can reposition. Based at least in part on interpolation performed on the route poses (some of which may be repositioned), the robot can dynamically route.

PRIORITY

This application is a continuation of, and claims the benefit ofpriority to, co-owned and co-pending U.S. patent application Ser. No.15/341,612 of the same title filed Nov. 2, 2016, the contents of whichbeing incorporated herein by reference in its entirety.

COPYRIGHT

A portion of the disclosure of this patent document contains materialthat is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent files or records, but otherwise reserves all copyrightrights whatsoever.

BACKGROUND Technological Field

The present application relates generally to robotics, and morespecifically to systems and methods for dynamic route planning inautonomous navigation.

Background

Robotic navigation can be a complex problem. In some cases, robots candetermine a route to travel. By way of illustration, a robot can learnroutes demonstrated by a user (e.g., the user can control a robot alonga route and/or can upload a map containing a route). As anotherillustration, a robot can plan its own route in an environment based onits knowledge of the environment (e.g., a map). However, a challengethat can occur is that after a robot determines a route, features of theenvironment can change. For example, items can fall into the path of theroute and/or parts of the environment can change. Current robots may notbe able to make real time adjustments to its planned path in response tothese changes (e.g., blockages). In such situations, current robots maystop, collide into objects, and/or make sub-optimal adjustments to itsroute. Accordingly, there is a need for improved systems and methods forautonomous navigation, including systems and methods for dynamic routeplanning.

SUMMARY

The foregoing needs are satisfied by the present disclosure, whichprovides for, inter alia, apparatus and methods for dynamic routeplanning in autonomous navigation. Example implementations describedherein have innovative features, no single one of which is indispensableor solely responsible for their desirable attributes. Without limitingthe scope of the claims, some of the advantageous features will now besummarized.

In a first aspect, a robot is disclosed. In one exemplaryimplementation, the robot includes: one or more sensors configured tocollect data about an environment including detected points on one ormore objects in the environment; and a controller configured to: createa map of the environment based at least in part on the collected data,determine a route in the map in which the robot will travel, generateone or more route poses on the route, wherein each route pose comprisesa footprint indicative of poses of the robot along the route and eachroute pose has a plurality of points disposed therein, determine forceson each of the plurality of points of each route pose, the forcescomprising repulsive forces from one or more of the detected points onthe one or more objects and attractive forces from one or more of theplurality of points on others of the one or more route poses, repositionone or more route poses in response to the forces on each point of theone or more route poses, and perform interpolation between one or moreroute poses to generate a collision-free path between the one or moreroute poses for the robot to travel.

In one variant, the one or more route poses form a sequence in which therobot travels along the route; and the interpolation comprises a linearinterpolation between sequential ones of the one or more route poses.

In another variant, the interpolation generates one or moreinterpolation route poses having substantially similar footprints to thefootprint of each route pose. In another variant, the determination ofthe forces on each point of the one or more route poses furthercomprises computing a force function that associates, at least in part,the forces on each point of each route pose with one or morecharacteristics of objects in the environment.

In another variant, the one or more characteristics includes one or moreof distance, shape, material, and color. In another variant, the forcefunction associates zero repulsive force exerted by a first detectedpoint on a first object where a distance between the first point and asecond point of a first route pose is above a predetermined distancethreshold.

In another variant, the footprint of each route pose has substantiallysimilar size and shape as the footprint of the robot.

In another variant, the robot comprises a floor cleaner.

In a second aspect, a method for dynamic navigation of a robot isdisclosed. In one exemplary implementation, the method includes:generating a map of the environment using data from one or more sensors;determining a route on the map, the route including one or more routeposes, each route pose comprising a footprint indicative at least inpart of a pose and a shape of the robot along the route and each routepose having a plurality of points disposed therein; computing repulsiveforces from a point on an object in the environment onto the pluralityof points of a first route pose of the one or more route poses;repositioning the first route pose in response to at least the repulsiveforce; and performing an interpolation between the repositioned firstroute pose and another of the one or more route poses.

In one variant, determining attractive forces from a point on another ofthe one or more route poses exerted on the plurality of points of thefirst route pose. In another variant, detecting a plurality of objectsin the environment with the one or more sensors, each of the pluralityof objects having detected points; and defining a force function, theforce function computing repulsive forces exerted by each of thedetected points of the plurality of objects on the plurality of pointsof the first route pose, wherein each repulsive force is a vector.

In another variant, repositioning the first route pose includescalculating the minimum of the force function.

In another variant, the repositioning of the first route pose includestranslating and rotating the first route pose.

In another variant, interpolation includes: generating an interpolationroute pose having a footprint substantially similar to a shape of therobot; and determining a translation and rotation of the interpolationroute pose based at least on a collision-free path between thetranslated and rotated first route pose and the another of the one ormore route poses.

In another variant, the method further comprising computing a magnitudeof the repulsive forces as proportional to a distance between the pointon the object and each of the plurality of points of the first routepose if the point on the object is outside of the footprint of the firstroute pose.

In another variant, computing a magnitude of the repulsive forces asinversely proportional to a distance between the point on the object andeach of the plurality of points of the first route pose if the point onthe object is inside the footprint of the first route pose.

In another variant, the method further includes computing the torqueforces onto the plurality of points of the first route pose due to therepulsive forces.

In a third aspect, a non-transitory computer-readable storage apparatusis disclosed. In one embodiment, the non-transitory computer-readablestorage apparatus has a plurality of instructions stored thereon, theinstructions being executable by a processing apparatus to operate arobot. The instructions are configured to, when executed by theprocessing apparatus, cause the processing apparatus to: generate a mapof the environment using data from one or more sensors; determine aroute on the map, the route including one or more route poses, eachroute pose comprising a footprint indicative at least in part of a poseand a shape of the robot along the route and each route pose having aplurality of points disposed therein; and compute repulsive forces froma point on an object in the environment onto the plurality of points ofa first route pose of the one or more route poses.

In one variant, the instructions when executed by the processingapparatus, further cause the processing apparatus to determineattractive forces from a point on another of the one or more route posesexerted on the plurality of points of the first route pose.

In another variant, the instructions when executed by the processingapparatus, further cause the processing apparatus to determine torqueforces from a point on another of the one or more route poses exerted onthe plurality of points of the first route pose.

These and other objects, features, and characteristics of the presentdisclosure, as well as the methods of operation and functions of therelated elements of structure and the combination of parts and economiesof manufacture, will become more apparent upon consideration of thefollowing description and the appended claims with reference to theaccompanying drawings, all of which form a part of this specification,wherein like reference numerals designate corresponding parts in thevarious figures. It is to be expressly understood, however, that thedrawings are for the purpose of illustration and description only andare not intended as a definition of the limits of the disclosure. Asused in the specification and in the claims, the singular form of “a”,“an”, and “the” include plural referents unless the context clearlydictates otherwise.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosed aspects will hereinafter be described in conjunction withthe appended drawings, provided to illustrate and not to limit thedisclosed aspects, wherein like designations denote like elements.

FIG. 1 illustrates various side elevation views of exemplary body formsfor a robot in accordance with principles of the present disclosure.

FIG. 2A is a diagram of an overhead view of a robot navigating a path inaccordance with some implementations of this disclosure.

FIG. 2B illustrates an overhead view of a user demonstrating a route toa robot before the robot autonomously travels a route in an environment.

FIG. 3 is a functional block diagram of a robot in accordance with someprinciples of this disclosure.

FIG. 4A is a top view diagram illustrating the interaction between arobot and an obstacle in accordance with some implementations of thisdisclosure.

FIG. 4B is a diagram of a global layer, intermediate layer, and locallayer in accordance with implementations of the present disclosure.

FIG. 4C is a process flow diagram of an exemplary method for dynamicroute planning in accordance with some implementations of thisdisclosure.

FIG. 4D illustrates an overhead view of route poses along with repulsiveforces exerted by objects in accordance with some implementations of thepresent disclosure.

FIG. 4E illustrates example points on a route pose in accordance withsome implementations of the present disclosure.

FIG. 4F illustrates an overhead view showing attractive forces betweenroute poses in accordance with some implementations of the presentdisclosure.

FIG. 5 is an overhead view of a diagram showing interpolation betweenroute poses in accordance with some implementations of this disclosure.

FIG. 6 is a process flow diagram of an exemplary method for operation ofa robot in accordance with some implementations of this disclosure.

FIG. 7 is a process flow diagram of an exemplary method for operation ofa robot in accordance with some implementations of this disclosure.

All Figures disclosed herein are © Copyright 2018 Brain Corporation. Allrights reserved.

DETAILED DESCRIPTION

Various aspects of the novel systems, apparatuses, and methods disclosedherein are described more fully hereinafter with reference to theaccompanying drawings. This disclosure can, however, be embodied in manydifferent forms and should not be construed as limited to any specificstructure or function presented throughout this disclosure. Rather,these aspects are provided so that this disclosure will be thorough andcomplete, and will fully convey the scope of the disclosure to thoseskilled in the art. Based on the teachings herein, one skilled in theart should appreciate that the scope of the disclosure is intended tocover any aspect of the novel systems, apparatuses, and methodsdisclosed herein, whether implemented independently of, or combinedwith, any other aspect of the disclosure. For example, an apparatus canbe implemented or a method can be practiced using any number of theaspects set forth herein. In addition, the scope of the disclosure isintended to cover such an apparatus or method that is practiced usingother structure, functionality, or structure and functionality inaddition to or other than the various aspects of the disclosure setforth herein. It should be understood that any aspect disclosed hereincan be implemented by one or more elements of a claim.

Although particular aspects are described herein, many variations andpermutations of these aspects fall within the scope of the disclosure.Although some benefits and advantages of the preferred aspects arementioned, the scope of the disclosure is not intended to be limited toparticular benefits, uses, and/or objectives. The detailed descriptionand drawings are merely illustrative of the disclosure rather thanlimiting, the scope of the disclosure being defined by the appendedclaims and equivalents thereof.

The present disclosure provides for improved systems and methods fordynamic route planning in autonomous navigation. As used herein, a robotcan include mechanical or virtual entities configured to carry outcomplex series of actions automatically. In some cases, robots can bemachines that are guided by computer programs or electronic circuitry.In some cases, robots can include electro-mechanical components that areconfigured for navigation, where the robot can move from one location toanother. Such navigating robots can include autonomous cars, floorcleaners, rovers, drones, carts, and the like.

As referred to herein, floor cleaners can include floor cleaners thatare manually controlled (e.g., driven or remote control) and/orautonomous (e.g., using little to no user control). For example, floorcleaners can include floor scrubbers that a janitor, custodian, or otherperson operates and/or robotic floor scrubbers that autonomouslynavigate and/or clean an environment. Similarly, floor cleaners can alsoinclude vacuums, steamers, buffers, mop, polishers, sweepers,burnishers, etc.

Detailed descriptions of the various implementations and variants of thesystem and methods of the disclosure are now provided. While manyexamples discussed herein are in the context of robotic floor cleaners,it will be appreciated that the described systems and methods containedherein can be used in other robots. Myriad other example implementationsor uses for the technology described herein would be readily envisagedby those having ordinary skill in the art, given the contents of thepresent disclosure.

Advantageously, the systems and methods of this disclosure at least: (i)provide for dynamic route planning in an autonomously navigating robot;(ii) enhance efficiency in navigating environments, which can allow forimproved and/or efficient utilization of resources (e.g., energy, fuel,cleaning fluid, etc.) usage; and (iii) provide computational efficiencywhich can reduce consumption of processing power, energy, time, and/orother resources in navigating robots. Other advantages are readilydiscernable by one having ordinary skill given the contents of thepresent disclosure.

For example, many current robots that can autonomously navigate areprogrammed to navigate a route and/or path to a goal. In order tonavigate these routes, these robots can create a path plan (e.g., aglobal solution). Also, these robots can have localized plans in a smallarea around it (e.g., in the order of a few meters), where the robot candetermine how it will navigate around obstacles detected by its sensors(typically with basic commands to turn when an object is detected). Therobot can then traverse the space in the pattern and avoid obstaclesdetected by its sensors by, e.g., stopping, slowing down, deviating leftor right, etc. However, in many current applications, such traversal andavoidance can be complicated and robots can either have undesirableresults (e.g., stoppages or collisions) and/or not be able to navigatethrough more complex situations. In some cases, such currentapplications can also be computationally expensive and/or slow to run,causing robots to act unnaturally.

Advantageously, using systems and methods disclosed herein, robots candeviate from its programming, following more efficient paths and/ormaking more complex adjustments to avoid obstacles. In someimplementations described herein, such movements can be determined in amore efficient, faster way, that also appears more natural as a robotplans more complex paths.

A person having ordinary skill in the art would appreciate that a robot,as referred to herein, can have a number of different appearances/forms.FIG. 1 illustrates various side elevation views of exemplary body formsfor a robot in accordance with principles of the present disclosure.These are non-limiting examples meant to further illustrate the varietyof body forms, but not to restrict robots described herein to anyparticular body form. For example, body form 100 illustrates an examplewhere the robot is a stand-up shop vacuum. Body form 102 illustrates anexample where the robot is a humanoid robot having an appearancesubstantially similar to a human body. Body form 104 illustrates anexample where the robot is a drone having propellers. Body form 106illustrates an example where the robot has a vehicle shape having wheelsand a passenger cabin. Body form 108 illustrates an example where therobot is a rover.

Body form 110 can be an example where the robot is a motorized floorscrubber. Body form 112 can be a motorized floor scrubber having a seat,pedals, and a steering wheel, where a user can drive body form 112 likea vehicle as body form 112 cleans, however, body form 112 can alsooperate autonomously. Other body forms are further contemplated,including industrial machines that can be robotized, such as forklifts,tugs, boats, planes, etc.

FIG. 2A is a diagram of an overhead view of robot 202 navigating a path206 in accordance with some implementations of this disclosure. Robot202 can autonomously navigate through environment 200, which cancomprise various objects 208, 210, 212, 218. Robot 202 can start at aninitial location and end at an end location. As illustrated, the initialposition and the end position are substantially the same, illustrating asubstantially closed loop. However, in other cases, the initial locationand the end location may not be substantially the same, forming an openloop.

By way of illustration, in some implementations, robot 202 can be arobotic floor cleaner, such as a robotic floor scrubber, vacuum cleaner,steamer, mop, burnisher, sweeper, and the like. Environment 200 can be aspace having floors that are desired to be cleaned. For example,environment 200 can be a store, warehouse, office building, home,storage facility, etc. One or more of objects 208, 210, 212, 218 can beshelves, displays, objects, items, people, animals, or any other entityor thing that may be on the floor or otherwise impede the robot'sability to navigate through environment 200. Route 206 can be thecleaning path traveled by robot 202 autonomously. Route 206 can follow apath that weaves between objects 208, 210, 212, 218 as illustrated inexample route 206. For example, where objects 208, 210, 212, 218 areshelves in a store, robot 202 can go along the aisles of the store andclean the floors of the aisles. However, other routes are alsocontemplated, such as, without limitation, weaving back and forth alongopen floor areas and/or any cleaning path a user could use to clean thefloor (e.g., if the user is manually operating a floor cleaner). In somecases, robot 202 can go over a portion a plurality of times.Accordingly, routes can overlap on themselves. Accordingly, route 206 ismeant merely as illustrative examples and can appear differently asillustrated. Also, as illustrated, one example of environment 200 isshown, however, it should be appreciated that environment 200 can takeon any number of forms and arrangements (e.g., of any size,configuration, and layout of a room or building) and is not limited bythe example illustrations of this disclosure.

In route 206, robot 202 can begin at the initial location, which can berobot 202's starting point. Robot 202 can then clean along route 206autonomously (e.g., with little or no control from a user) until itreaches an end location, where it can stop cleaning. The end locationcan be designated by a user and/or determined by robot 202. In somecases, the end location can be the location in route 206 after whichrobot 202 has cleaned the desired area of floor. As previouslydescribed, route 206 can be a closed loop or an open loop. By way ofillustrative example, an end location can be a location for storage forrobot 202, such as a temporary parking spot, storage room/closet, andthe like. In some cases, the end location can be the point where a usertraining and/or programming tasks for robot 202 stopped training and/orprogramming.

In the context of floor cleaners (e.g., floor scrubbers, vacuumcleaners, etc.), robot 202 may or may not clean at every point alongroute 206. By way of illustration, where robot 202 is a robotic floorscrubber, the cleaning system (e.g., water flow, cleaning brushes, etc.)of robot 202 may only be operating in some portions of route 206 and notothers. For example, robot 202 may associate certain actions (e.g.,turning, turning on/off water, spraying water, turning on/off vacuums,moving vacuum hose positions, gesticulating an arm, raising/lowering alift, moving a sensor, turning on/off a sensor, etc.) with particularpositions and/or trajectories (e.g., while moving in a certain directionor in a particular sequence along route 206) along the demonstratedroute. In the context of floor cleaners, such association may bedesirable when only some areas of the floor are to be cleaned but notothers and/or in some trajectories. In such cases, robot 202 can turn ona cleaning system in areas where a user demonstrated for robot 202 toclean, and turn off the cleaning system otherwise.

FIG. 2B illustrates an overhead view of a user demonstrating route 216to robot 202 before robot 202 autonomously travels route 206 inenvironment 200. In demonstrating route 216, a user can start robot 202at an initial location. Robot 202 can then weave around objects 208,210, 212, 218. Robot 202 can stop at an end location, as previouslydescribed. In some cases (and as illustrated), autonomously navigatedroute 206 can be exactly the same as demonstrated route 216. In somecases, route 206 might not be precisely the same as route 216, but canbe substantially similar. For example, as robot 202 navigates route 206,robot 202 uses its sensors to sense where it is in relationship to itssurrounding. Such sensing may be imprecise in some instances, which maycause robot 202 to not navigate the precise route that had beendemonstrated and robot 202 had been trained to follow. In some cases,small changes to environment 200, such as the moving of shelves and/orchanges in the items on the shelves, can cause robot 202 to deviate fromroute 216 when it autonomously navigates route 206. As another example,as previously described, robot 202 can avoid objects by turning aroundthem, slowing down, etc. when autonomously navigating route 206. Theseobjects might not have been present (and avoided) when the userdemonstrated route 216. For example, the objects may be temporarilyand/or transient items, and/or may be transient and/or dynamic changesto the environment 200. As another example, the user may have done apoor job demonstrating route 216. For example, the user may have crashedand/or bumped into a wall, shelf, object, obstacle, etc. As anotherexample, an obstacle may have been present while the user haddemonstrated route 216, but no longer there when robot 202 autonomouslynavigates route 206. In these cases, robot 202 can store in memory(e.g., memory 302) one or more actions that it can correct, such ascrashing and/or bumping to a wall, shelf, object, obstacle, etc. Whenrobot 202 then autonomously navigates demonstrated route 216 (e.g., asroute 206), robot 202 can correct such actions and not perform them(e.g., not crash and/or bump into a wall, shelf, object, obstacle, etc.)when it is autonomously navigating. In this way, robot 202 can determinenot to autonomously navigate at least a portion of a navigable route,such as a demonstrated route. In some implementations, determining notto autonomously navigate at least a portion of the navigable routeincludes determining when to avoid an obstacle and/or object.

As previously mentioned, as a user demonstrates route 216, the user canturn on and off the cleaning system of robot 202, or perform otheractions, in order to train robot 202 where (e.g., at what position),and/or along what trajectories, to clean along route 216 (andsubsequently when robot 202 autonomously cleans route 206). The robotcan record these actions in memory 302 and later perform them whenautonomously navigating. These actions can include any actions thatrobot 202 may perform, such as turning, turning on/off water, sprayingwater, turning on/off vacuums, moving vacuum hose positions,gesticulating an arm, raising/lowering a lift, moving a sensor, turningon/off a sensor, etc.

FIG. 3 is a functional block diagram of a robot 202 in accordance withsome principles of this disclosure. As illustrated in FIG. 3, robot 202can include controller 304, memory 302, user interfaces unit 308,exteroceptive sensors unit 306, proprioceptive sensors unit 310, andcommunications unit 312, as well as other components and subcomponents(e.g., some of which may not be illustrated). Although a specificimplementation is illustrated in FIG. 3, it is appreciated that thearchitecture may be varied in certain implementations as would bereadily apparent to one of ordinary skill given the contents of thepresent disclosure.

Controller 304 can control the various operations performed by robot202. Controller 304 can include one or more processors (e.g.,microprocessors) and other peripherals. As used herein, processor,microprocessor, and/or digital processor can include any type of digitalprocessing device such as, without limitation, digital signal processors(“DSPs”), reduced instruction set computers (“RISC”), general-purpose(“CISC”) processors, microprocessors, gate arrays (e.g., fieldprogrammable gate arrays (“FPGAs”)), programmable logic device (“PLDs”),reconfigurable computer fabrics (“RCFs”), array processors, securemicroprocessors, specialized processors (e.g., neuromorphic processors),and application-specific integrated circuits (“ASICs”). Such digitalprocessors may be contained on a single unitary integrated circuit die,or distributed across multiple components.

Controller 304 can be operatively and/or communicatively coupled tomemory 302. Memory 302 can include any type of integrated circuit orother storage device configured to store digital data including, withoutlimitation, read-only memory (“ROM”), random access memory (“RAM”),non-volatile random access memory (“NVRAM”), programmable read-onlymemory (“PROM”), electrically erasable programmable read-only memory(“EEPROM”), dynamic random-access memory (“DRAM”), Mobile DRAM,synchronous DRAM (“SDRAM”), double data rate SDRAM (“DDR/2 SDRAM”),extended data output (“EDO”) RAM, fast page mode RAM (“FPM”), reducedlatency DRAM (“RLDRAM”), static RAM (“SRAM”), “flash” memory (e.g.,NAND/NOR), memristor memory, pseudostatic RAM (“PSRAM”), etc. Memory 302can provide instructions and data to controller 304. For example, memory302 can be a non-transitory, computer-readable storage medium having aplurality of instructions stored thereon, the instructions beingexecutable by a processing apparatus (e.g., controller 304) to operaterobot 202. In some cases, the instructions can be configured to, whenexecuted by the processing apparatus, cause the processing apparatus toperform the various methods, features, and/or functionality described inthis disclosure. Accordingly, controller 304 can perform logical andarithmetic operations based on program instructions stored within memory302.

In some implementations, exteroceptive sensors unit 306 can comprisesystems and/or methods that can detect characteristics within and/oraround robot 202. Exteroceptive sensors unit 306 can comprise aplurality and/or a combination of sensors. Exteroceptive sensors unit306 can include sensors that are internal to robot 202 or external,and/or have components that are partially internal and/or partiallyexternal. In some cases, exteroceptive sensors unit 306 can includeexteroceptive sensors such as sonar, LIDAR, radar, lasers, cameras(including video cameras, infrared cameras, 3D cameras, etc.), time offlight (“TOF”) cameras, antenna, microphones, and/or any other sensorknown in the art. In some implementations, exteroceptive sensors unit306 can collect raw measurements (e.g., currents, voltages, resistancesgate logic, etc.) and/or transformed measurements (e.g., distances,angles, detected points in obstacles, etc.). Exteroceptive sensors unit306 can generate data based at least in part on measurements. Such datacan be stored in data structures, such as matrices, arrays, etc. In someimplementations, the data structure of the sensor data can be called animage.

In some implementations, proprioceptive sensors unit 310 can includesensors that can measure internal characteristics of robot 202. Forexample, proprioceptive sensors unit 310 can measure temperature, powerlevels, statuses, and/or any other characteristic of robot 202. In somecases, proprioceptive sensors unit 310 can be configured to determinethe odometry of robot 202. For example, proprioceptive sensors unit 310can include proprioceptive sensors unit 310, which can comprise sensorssuch as accelerometers, inertial measurement units (“IMU”), odometers,gyroscopes, speedometers, cameras (e.g. using visual odometry),clock/timer, and the like. Odometry to facilitate autonomous navigationof robot 202. This odometry can include robot 202's position (e.g.,where position includes robot's location, displacement and/ororientation, and can sometimes be interchangeable with the term pose asused herein) relative to the initial location. In some implementations,proprioceptive sensors unit 310 can collect raw measurements (e.g.,currents, voltages, resistances gate logic, etc.) and/or transformedmeasurements (e.g., distances, angles, detected points in obstacles,etc.). Such data can be stored in data structures, such as matrices,arrays, etc. In some implementations, the data structure of the sensordata can be called an image.

In some implementations, user interfaces unit 308 can be configured toenable a user to interact with robot 202. For example, user interfaces308 can include touch panels, buttons, keypads/keyboards, ports (e.g.,universal serial bus (“USB”), digital visual interface (“DVI”), DisplayPort, E-Sata, Firewire, PS/2, Serial, VGA, SCSI, audioport,high-definition multimedia interface (“HDMI”), personal computer memorycard international association (“PCMCIA”) ports, memory card ports(e.g., secure digital (“SD”) and miniSD), and/or ports forcomputer-readable medium), mice, rollerballs, consoles, vibrators, audiotransducers, and/or any interface for a user to input and/or receivedata and/or commands, whether coupled wirelessly or through wires. Userinterfaces unit 308 can include a display, such as, without limitation,liquid crystal display (“LCDs”), light-emitting diode (“LED”) displays,LED LCD displays, in-plane-switching (“IPS”) displays, cathode raytubes, plasma displays, high definition (“HD”) panels, 4K displays,retina displays, organic LED displays, touchscreens, surfaces, canvases,and/or any displays, televisions, monitors, panels, and/or devices knownin the art for visual presentation. In some implementations userinterfaces unit 308 can be positioned on the body of robot 202. In someimplementations, user interfaces unit 308 can be positioned away fromthe body of robot 202, but can be communicatively coupled to robot 202(e.g., via communication units including transmitters, receivers, and/ortransceivers) directly or indirectly (e.g., through a network, server,and/or a cloud).

In some implementations, communications unit 312 can include one or morereceivers, transmitters, and/or transceivers. Communications unit 312can be configured to send/receive a transmission protocol, such asBLUETOOTH®, ZIGBEE®, Wi-Fi, induction wireless data transmission, radiofrequencies, radio transmission, radio-frequency identification(“RFID”), near-field communication (“NFC”), infrared, networkinterfaces, cellular technologies such as 3G (3GPP/3GPP2), high-speeddownlink packet access (“HSDPA”), high-speed uplink packet access(“HSUPA”), time division multiple access (“TDMA”), code divisionmultiple access (“CDMA”) (e.g., IS-95A, wideband code division multipleaccess (“WCDMA”), etc.), frequency hopping spread spectrum (“FHSS”),direct sequence spread spectrum (“DSSS”), global system for mobilecommunication (“GSM”), Personal Area Network (“PAN”) (e.g., PAN/802.15),worldwide interoperability for microwave access (“WiMAX”), 802.20, longterm evolution (“LTE”) (e.g., LTE/LTE-A), time division LTE (“TD-LTE”),global system for mobile communication (“GSM”),narrowband/frequency-division multiple access (“FDMA”), orthogonalfrequency-division multiplexing (“OFDM”), analog cellular, cellulardigital packet data (“CDPD”), satellite systems, millimeter wave ormicrowave systems, acoustic, infrared (e.g., infrared data association(“IrDA”)), and/or any other form of wireless data transmission.

As used herein, network interfaces can include any signal, data, orsoftware interface with a component, network, or process including,without limitation, those of the FireWire (e.g., FW400, FW800, FWS800T,FWS1600, FWS3200, etc.), universal serial bus (“USB”) (e.g., USB 1.X,USB 2.0, USB 3.0, USB Type-C, etc.), Ethernet (e.g., 10/100, 10/100/1000(Gigabit Ethernet), 10-Gig-E, etc.), multimedia over coax alliancetechnology (“MoCA”), Coaxsys (e.g., TVNET™), radio frequency tuner(e.g., in-band or OOB, cable modem, etc.), Wi-Fi (802.11), WiMAX (e.g.,WiMAX (802.16)), PAN (e.g., PAN/802.15), cellular (e.g., 3G,LTE/LTE-A/TD-LTE/TD-LTE, GSM, etc.), IrDA families, etc. As used herein,Wi-Fi can include one or more of IEEE-Std. 802.11, variants of IEEE-Std.802.11, standards related to IEEE-Std. 802.11 (e.g., 802.11a/b/g/n/ac/ad/af/ah/ai/aj/aq/ax/ay), and/or other wireless standards.

Communications unit 312 can also be configured to send/receive atransmission protocol over wired connections, such as any cable that hasa signal line and ground. For example, such cables can include Ethernetcables, coaxial cables, Universal Serial Bus (“USB”), FireWire, and/orany connection known in the art. Such protocols can be used bycommunications unit 312 to communicate to external systems, such ascomputers, smart phones, tablets, data capture systems, mobiletelecommunications networks, clouds, servers, or the like.Communications unit 312 can be configured to send and receive signalscomprising of numbers, letters, alphanumeric characters, and/or symbols.In some cases, signals can be encrypted, using algorithms such as128-bit or 256-bit keys and/or other encryption algorithms complyingwith standards such as the Advanced Encryption Standard (“AES”), RSA,Data Encryption Standard (“DES”), Triple DES, and the like.Communications unit 312 can be configured to send and receive statuses,commands, and other data/information. For example, communications unit312 can communicate with a user operator to allow the user to controlrobot 202. Communications unit 312 can communicate with a server/networkin order to allow robot 202 to send data, statuses, commands, and othercommunications to the server. The server can also be communicativelycoupled to computer(s) and/or device(s) that can be used to monitorand/or control robot 202 remotely. Communications unit 312 can alsoreceive updates (e.g., firmware or data updates), data, statuses,commands, and other communications from a server for robot 202.

In some implementations, one or the components and/or subcomponents canbe instantiated remotely from robot 202. For example, mapping andlocalization units 262, may be located in a cloud and/or connected torobot 202 through communications unit 312. Connections can be directand/or through a server and/or network. Accordingly, implementations ofthe functionality of this disclosure should also be understood toinclude remote interactions where data can be transferred usingcommunications unit 312, and one or more portions of processes can becompleted remotely.

FIG. 4A is a top view diagram illustrating the interaction between robot202 and an obstacle 402 in accordance with some implementations of thisdisclosure. In navigating route 216, robot 202 can encounter obstacle402. Obstacle 402 can impede the path of robot 202, which is illustratedas route portion 404. If robot were to continue following on routeportion 404, it may collide with obstacle 402. However, in somecircumstances, using exteroceptive sensors unit 306 and/orproprioceptive sensors unit 310, robot 202 can stop before collidingwith obstacle 402.

This interaction with obstacle 402 illustrates advantages ofimplementations in accordance with the present disclosure. FIG. 4B is adiagram of global layer 406, intermediate layer 408, and local layer 410in accordance with implementations of the present disclosure. Globallayer 406, intermediate layer 408, and local layer 410 can be hardwareand/or software layers instantiated in one or more of memory 302 and/orcontroller 304. Global layer 406 can include software and/or hardwarethat implements global mapping and routing. For example, the high-levelmapping can include a map of environment 200. The map can also include arepresentation of route 216, allowing robot 202 to navigate the space inenvironment 200.

In some implementations, global layer 406 can include a global planner.In this way, global layer 406 can determine one or more of: the locationof robot 202 (e.g., in global coordinates such as two-dimensionalcoordinates, three-dimensional coordinates, four-dimensionalcoordinates, etc.); the path robot 202 should take to reach its goal;and/or higher-level (e.g., long-range) planning. In this way, robot 202can determine its general path and/or direction to travel from onelocation to another.

Local layer 410 includes software and/or hardware that implements localplanning. For example, local layer 410 can include short-range planningconfigured for maneuvering in local constraints of motion. Local layer410 can process data received from exteroceptive sensors unit 306 anddetermine the presence and/or positioning of obstacles and/or objectsnear robot 202. For example, if an object is within range of a sensor ofexteroceptive sensors unit 306 (e.g., a LIDAR, sonar, camera, etc.),robot 202 can detect the object. The local layer 410 can compute and/orcontrol motor functionality to navigate around objects, such bycontrolling actuators to turn, move forward, reverse, etc. In somecases, processing in local layer 410 can be computationally intensive.For example, local layer 410 can receive data from sensors ofexteroceptive sensors unit 306 and/or proprioceptive sensors unit 310.Local layer 410 can then determine motor functions to avoid an objectdetected by exteroceptive sensors unit 306 (e.g., using a motor to turna steering column left and right, and/or using a motor to push the robotforward). The interplay of local layer 410 and global layer 406 canallow robot 202 to make local adjustments while still moving generallyalong a route to its goal.

However, in some circumstances, it can be desirable to make adjustmentsat a finer level than what would be computed by global layer 406, yetnot at the computationally intensive level of precise motor functions oflocal layer 410. Accordingly, intermediate layer 408 can includehardware and/or software that can determine intermediate adjustments ofrobot 202 as it navigates around objects.

In intermediate layer 408, robot 202 can plan how to avoid objectsand/or obstacles in its environment. In some cases, intermediate layer408 can be initialized with at least a partial path and/or route from aglobal path planner from global layer 406.

Because objects (e.g., obstacles, walls, etc.) present things in whichrobot 202 could collide, objects and/or obstacles can put forth arepulsive force on robot 202. In some cases, by objects repulsing robot202, robot 202 can navigate along a collision-free path around thoseobjects and/or obstacles.

FIG. 4C is a process flow diagram of an exemplary method 450 for dynamicroute planning in accordance with some implementations of thisdisclosure. In some implementations, method 450 can be performed byintermediate layer 408 and/or by controller 304. Block 452 can includeobtaining a route containing one or more route poses. In some cases,this route can be created by robot 202 and/or uploaded onto robot 202.In some cases, the route can be passed from global layer 406 tointermediate layer 408. Block 454 can include selecting a first routepose. Block 456 can include, for the first route pose, determiningrepulsive forces from objects in the environment. Block 458 can include,for the first route pose, determining attractive forces from other routeposes. Block 460 can include determining the translation and/or rotationof the first route pose due to the repulsive forces and attractiveforces. Block 462 can include performing interpolation to account forthe translated and/or rotated route pose. This process and others willbe illustrated throughout this disclosure.

By way of illustration, FIG. 4D illustrates route poses 414 and 416along with repulsive forces exerted by objects in accordance with someimplementations of the present disclosure. For example, the points on aroute can be discretized locations along the path, such as route poses,illustrating the pose of robot 202 throughout its route. In some cases,such discretized locations can also have associated probabilities, suchas particles or bubbles. Route poses can identify the position and/ororientation that robot 202 would travel on the route. In a planarapplication, the route pose can include (x, y, θ) coordinates. In somecases, θ can be the heading of the robot in the plane. The route posescan be regularly or irregularly spaced on robot 202's route. In somecases, intermediate layer can obtain the route containing one or moreroute poses from global layer 406, as described in block 452 of method450. In some implementations, route poses can form a sequence, whereinrobot 202 travels between sequential route poses on a route. Forexample, route poses 414 and 416 could be a sequence of route poseswhere robot 202 travels to route pose 414 and then to route pose 416.

By way of illustrative example, route poses 414 and 416 illustratediscretized locations along the route portion 404. This illustrativeexample shows route poses 414 and 416 as shaped as robot 202, withsubstantially similar footprints. The footprints of route poses 414 and416 can be adjusted in size depending on how conservative one desires tobe with respect to robot collisions. A smaller footprint can presenthigher likelihoods of a collision, but such a smaller footprint canallow robot 202 to clear more areas that it should be able to as itautonomously navigates. A larger footprint might decrease the likelihoodof a collision, but robot 202 would not go through some placesautonomously that it otherwise should be able to. The footprint can bepredetermined by a footprint parameter that sets the size (e.g., scales)of the footprint of robot 202, as illustrated in route poses (e.g.,route poses 414 and 416). In some cases, there can be a plurality offootprint parameters that control the sizes of route poses of robot 202asymmetrically.

In FIG. 4D, while route poses 414 and 416 are illustrated and described,it should be appreciated by someone having ordinary skill in the artthat there can be any number of route poses throughout a route, and thedescriptions of the implementations of this disclosure can be applied tothose route poses. Advantageously, having route poses 414 and 416 shapedlike robot 202 (e.g., a footprint of robot 202) can allow robot 202 todetermine places in which robot 202 can fit while travelling. Thefootprint parameter(s) can be used to adjust how robot 202 projectsitself. For example, a larger footprint used in route poses 414 and/or416 can be more conservative in that it can cause, at least in part,robot 202 to travel further away from objects. In contrast, a smallerfootprint can cause, at least in part, robot 202 to travel closer toobjects. Route poses (e.g., route poses 414 and 416) can be of differentsizes from one another. By way of illustration, it may be desirable forrobot 202 to be more conservative in certain scenarios, such as onturns. Accordingly, in this illustration, the footprint of route poseson turns can be larger than the footprint of route poses onstraightaways. Such dynamic reshaping of route poses can be performed bymaking the size of the route poses dependent on the rotation of theroute pose relative to other route poses, or the changes in translationand/or rotation of route pose. One or more of the route poses on a route(e.g., route poses 414 and/or 416) can also be a different shape otherthan the shape of robot 202. For example, the route poses can becircular, square, triangular, and/or any other shape.

As described in block 454 from method 450, one can observe either routeposes 414 or 416 as a first route pose. However, for purposes ofillustration, and to illustrate the breadth of the describedimplementations of this disclosure, route poses 414 and 416 will bedescribed together.

Points along objects (e.g., points determined by mapping, detecting bysensors of exteroceptive sensors unit 306, etc.) can exert a repulsiveforce on route poses of robot 202 (e.g., route poses 414 and 416). Inthis way, the objects can, conceptually, prevent robot 202 fromcolliding into them. In some cases, these points can represent at leastin part poses and/or sets of poses. For example, arrows 412 illustraterepulsive forces from points along object 210.

In some implementations, the forces exerted by points by objects may beuniform in that each point on route poses 414 and 416 can havesubstantially similar forces exerted on them. However, in otherimplementations, the forces exerted by points of objects on route poses414 and 416 may not be uniform and may vary based on a force function.

By way of illustration, a force function (e.g., a repulsive forcefunction) can in some cases determine at least in part the repulsiveforce exerted on a point on route poses 414 or 416 by an object. Forexample, the force functions can be used in block 456 of method 450 todetermine the repulsive forces from objects in the environment for afirst route pose (e.g., a first route pose of route poses 414 and 416).In some implementations, the force function can be dependent oncharacteristics of where an object appears relative to route poses 414and 416. The force function can then represent the force experienced bypoints route poses 414 and 416 (e.g., one or more points on the surfaceof route poses 414 and 416, the center of route poses 414 and 416, thecenter of mass of route poses 414 and 416, and/or any point of and/oraround route poses 414 and 416). Because the forces can be dependent ontheir direction and magnitudes, repulsive forces (and/or attractiveforces) can be vectors. In some cases, repulsive forces can exertrotational forces on a route pose, which can manifest in torque forces.

For example, repulsion forces and torque forces can be calculated at ndifferent poses along a path. In some cases, these n different poses canbe associated with route poses. Each pose can consist of m points in afootprint. In some cases, these m points can be points on the routeposes.

In some cases, a plurality of points can define the body of robot 202 asreflected in route poses 414 and 416, providing representative coverageover a portion of the body of robot 202 and/or substantially all ofrobot 202. For example, 15-20 points can be distributed throughout thesurface and/or interior of robot 202 and be reflected in route poses 414and 416. However, in some cases, there can be fewer points. FIG. 4Eillustrates example points on route pose 414, such as point 418. Eachpoint can experience, at least in part, the forces (e.g., repulsiveforces) placed on it by objects in the surrounding of route poses 414.

Advantageously, by having a plurality of points on the body of routeposes 414 and 416 that can experience forces, points of route poses 414and 416 can translate and/or rotate relative to one another, causing, atleast in part, repositioning (e.g., translation and/or rotation) ofroute poses 414 and 416. These translations and/or rotations of routeposes 414 and 416 can cause deformations of the route navigated by robot202.

Torsion forces can occur when different points on a route poseexperience different magnitudes and directions of forces. Accordingly,the torsion force can cause the route poses to rotate. In some cases,predetermined parameters can define at least in part the torsionexperienced by route poses 414 and 416. For example, a predeterminedtorsion parameter can include a multiplier for the rotational forcesexperience on a point on route poses 414 or 416. This predeterminedtorsion parameter can be indicative of force due to misalignment ofroute poses 414 or 416 and the path. In some cases, the predeterminedtorsion parameter may vary based on whether the force is repulsive orcohesive.

Returning to FIG. 4D, a characteristic on which the force functiondepends in part can be a position of a point on an object relative toroute poses 414 and 416. Distance can be determined based at least inpart on sensors of exteroceptive sensors unit 306. As a first example,the repulsive force exerted onto route poses 414 and 416 from a point onan object exterior to robot 202 (e.g., not within the footprint of routeposes 414 and 416 such as points on obstacles 210 and 212 asillustrated) can be characterized at least in part by the functionr(d)∝1/d, where r is the repulsion of a point on an object and d is thedistance between the point on an object and a point on route pose 414 orroute pose 416. In this way, the repulsion of a point on an object isinversely proportional to the distance between the point on the objectand the point on route pose 414 or route pose 416. Advantageously, sucha function allows objects close to route poses 414 and 416 to exert morerepulsion, and thereby potentially more strongly influence the course ofrobot 202 to avoid a collision than objects further away.

In some cases, a predetermined repulsive distance threshold can be puton the distance between a point on route pose 414 and route pose 416 anda point on an object. This predetermined repulsive distance thresholdcan be indicative at least in part of the maximum distance between apoints on either route pose 414 and route pose 416 and a point on anobject in which the point on the object can exert a repulsive force(and/or a torsion force) on points on either route poses 414 and 416.Accordingly, when a point on an object is a distance (e.g., from a pointon either route pose 414 and route pose 416) that is above (or equal toand/or above, depending on the definition of the threshold), therepulsive force and/or torsion force can be zero or substantially zero.Advantageously, having a predetermined repulsive distance threshold can,in some cases, prevent some points on objects from exerting forces onpoints on route poses 414 and 416. In this way, when there is apredetermined repulsive distance, robot 202 can get closer to certainobjects and/or not be influenced by further away objects.

As a second example, the repulsive force exerted onto route poses 414and 416 from a point on the interior of route poses 414 and 416 (e.g.,within the footprint of route poses 414 and 416). For example, object402 has portion 420 that appears interior to route pose 416. In thesecases, a different force function can be exerted by points of object 402in portion 420 onto points of route pose 416 in portion 420. In someimplementations, this force can be characterized at least in part by thefunction r(d)∝d, where the variables are as described above.Advantageously, by having a different force function defined forinterior objects, route pose 416 can move asymmetrically causingrotations.

In some implementations, the force function can also depend on othercharacteristics of objects, such as shape, material, color, and/or anyother characteristic of the object. These characteristics can bedetermined by one or more of sensors of exteroceptive sensors 306 inaccordance with known methods in the art. Advantageously, taking intoaccount characteristics can be further informative of how robot 202should navigate around objects. In some instances, the cost map can beused to compute additional repulsion values based on thesecharacteristics.

For example, the shape of an object can be indicative at least in partof an associated repercussion of collision. By way of illustration, ahumanoid shape may be indicative of a person. As such, an objectdetected with this shape can place a greater repulsive force on routeposes 414 and 416 in order to push the path further away from thehumanoid shape. As another example, the shape of an object can beindicative in part of increased damage (e.g., to the object or robot202) if a collision occurred. By way of illustration, pointed objects,skinny objects, irregular objects, predetermined shapes (e.g., vase,lamp, display, etc.) and/or any other shape can be indicative at leastin part of resulting in increased damage. Size may be anothercharacteristic of shape that can be taken into account. For example,smaller objects may be more fragile in the event of a collision, butlarger objects could cause more damage to robot 202. In the case ofsize, force functions can take into account the size of the objects sothat the points on those objects repulse points on route poses 414 and416 proportionally as desired. By way of illustration, if route pose 414is between a larger object and a smaller object, if points of the largerobject have a relatively larger repulsive force as defined at least inpart on the force function, route pose 414 will be pushed relativelycloser to the smaller object. If the points of the smaller object have arelatively larger repulsive force as defined at least in part on theforce function, route pose 414 will be pushed relatively closer to thelarger object. Accordingly, the repulsive force on route poses 414 and416 can be adjusted based at least in part on the shape. The shape canbe detected at least in part by sensors of exteroceptive sensors unit306. As another illustrative example, walls can be identified in a costmap, and a repulsive force can be associated with walls due to theirsize and shape.

In some implementations, the force function can also depend on thematerial of the objects. For example, certain materials can beindicative at least in part of more damage if a collision occurred. Byway of illustration, glass, porcelain, mirrors, and/or other fragilematerial can prove to be more damaging in the event of a collision. Insome cases, such as in the case of mirrors, the material can sometimescause errors in the sensors of exteroceptive sensor units 306.Accordingly, in some cases, it may be desirable for robot 202 tonavigate further away from such objects, which can be reflected in theforce function (e.g., increasing the repulsion force exerted by pointson objects of some materials versus other materials).

In some implementations, color can be detected by sensors ofexteroceptive sensor units 306. The force function can be dependent atleast in part on the color of an object and/or points on an object. Forexample, certain objects in an environment may be a certain color (e.g.,red, yellow, etc.) to indicate at least in part that robot 202 (or insome cases people) should be cautious of those objects. Accordingly, insome cases, it may be desirable for robot 202 to navigate further awayfrom such objects, which can be reflected in the force function.

In some implementations, the force function can be dependent on otherfactors, such as the location of an object. For example, certain areasof a map (e.g., as passed from global layer 406) can havecharacteristics. By way of illustration, some areas of the map (e.g., acost map) can be areas in which robot 202 should not pass. There canalso can be places where robot 202 cannot go into because they are notaccessible (such as into an object). Accordingly, in some cases, theforce function can be adjusted to account for such places. In someimplementations, the force function can cause points in those places toexert no force (or substantially no force) on points on route poses 414and 416. Advantageously, no force can be reflective of regions whererobot 202 would not go (e.g., inside objects and the like). In contrast,in some implementations, such places can be treated as obstacles,exerting a repulsive force on route poses 414 and 416. Advantageously,having such a repulsion force can keep robot 202 from attempting toenter such areas.

In some implementations, not all forces on route poses 414 and 416 arerepulsive. For example, points on route poses (e.g., route poses 414 and416) can exert attractive (e.g., cohesive) forces, which can, at leastin part, pull route poses towards each other. FIG. 4F illustratesattractive forces between route poses 414 and 416 in accordance withsome implementations of the present disclosure. The arrows areindicative at least in part that route poses are drawn towards eachother along route portion 404. Advantageously, the cohesive forcebetween route poses can cause, at least in part, robot 202 towardsfollowing a path substantially similar to the path planned by globallayer 406 (e.g., a route substantially similar to an original route,such as an originally demonstrated route that robot 202 should follow inthe absence of objects around which to navigate).

The cohesive force can be set by a force function (e.g., a cohesiveforce function), which can be dependent on characteristics of the path,such as the spacing distance between route poses/particles, thesmoothness of the path, how desirable it is for robot 202 to follow apath, etc. In some cases, the cohesive force function can be based atleast in part on a predetermined cohesion multiplier, which candetermine at least in part the force pulling route poses together. Alower predetermined cohesion multiplier can reduce the cohesive strengthof route portion 404 (e.g., draw of route poses towards it) and, in somecases, may cause a loss in smoothness of the path travelled by robot202. In some cases, only sequential route poses exert cohesive forces onthe points of one another. In other cases, all route poses exertcohesive forces on one another. In still other cases, some route posesexert cohesive forces on others. The determination of which route posesare configured to exert cohesive forces on one another can depend on anumber of factors, which may vary on a case-by-case basis. For example,if a route is circular, it may be desirable for all route poses to exertcohesive forces on one another to tighten the circle. As anotherexample, if the route is complex, then it may be desirable for certaincomplex paths to only have sequential route poses exert cohesive forceson one another. This limitation may allow robot 202 to make more turnsand/or have more predictable results because other positioned routeposes will not unduly influence it. Ones between the aforementionedexamples in complexity may have some of the route poses exertingcohesive forces. As another example, the number of route poses may alsobe a factor. Having a lot of route poses on a route may cause unexpectedresults if all of them exert cohesive forces on one another. If thereare fewer route poses, this might not be a problem, and all or some ofthe route poses can exert forces. In some cases, there can be apredetermined cohesive force distance threshold, where if a point on afirst route pose is distance that is more than the predeterminedcohesive force distance threshold (or more than or equal to, dependingon how it is defined) from a point on a second route pose, the cohesiveforce can be zero or substantially zero.

In some implementations the cohesive force function and the repulsiveforce function can be the same force function. In other implementations,the cohesive force function and the repulsive force functions areseparate. The cohesive force function can be used to determine theattractive forces from other route poses in accordance with block 458from method 450. In some implementations, both the cohesive forces andrepulsive forces can result in torsion (e.g., causing rotation) of aroute pose.

As described with reference to intermediate layer 408, route poses 414and 416 can experience different attractive and repulsive forces. Insome implementations, the forces can be stored in arrays. For example,there can be an array of forces indicative of repulsion, torsion,cohesion, etc.

In some cases, forces can be toggled, such as by using an on/offparameter that can turn on or off any individual force and/or group offorces from a point. For example, the on/off parameter can be binarywherein one value turns the force on and another turns the force off. Inthis way, some forces can be turned off, such as based on the distancean object is from a route pose, whether a point is in the interior of anobject or no go zone, distance between route poses, etc.

On the balance, the net forces on route poses 414 and 416 can repositionone or more of route poses 414 and 416. For example, route poses 414 and416 can be displaced. Route poses 414 and 416 can displace (e.g.,translated and/or rotated) until their net forces, in any direction, aresubstantially zero and/or minimized. In this way, route poses 414 and416 can be displaced to locations indicative at least in part to anadjusted route for robot 202 to travel to avoid objects (e.g., obstacle402). The translation and/or rotation of a route pose due to therepulsive forces and attractive forces can be determined in accordancewith block 460 of method 450.

There can be different adjustments made to determining the displacementof route poses 414 and 416. For example, in some cases, instead ofconsidering all forces on route poses 414 and 416, attractive forces mayonly be considered. Advantageously, such a system can allow robot 202 tostick to static paths. Based at least in part on the displacement ofroute poses 414 and 416, robot 202 can set a new path for the routeplanner. In the new path, the trajectory can be representative of apoint on robot 202, such as the center of robot 202, as robot 202travels the path.

After robot 202 determines the displacement of route poses 414 and 416,robot 202 can determine a path to travel. For example, based on thepositions (e.g., locations and/or orientations) of route poses 414 and416, robot 202 can determine the path to navigate to and/or betweenroute poses 414 and 416, and/or any other route poses from its presentlocation. In some cases, robot 202 will travel between consecutive(e.g., sequential) route poses in order, defining at least in part apath. For example, this determination can be based at least in part onan interpolation between route poses taking into account the path robot202 can travel between those points. In many cases, linear interpolationcan be used. By using performing interpolation, robot 202 can accountfor the translated and/or rotated route pose in accordance with block462 in method 450.

FIG. 5 is an overhead view of a diagram showing interpolation betweenroute poses 414 and 416 in accordance with some implementations of thisdisclosure. Based on forces placed on route poses 414 and 416, asdescribed herein, route poses 414 and 416 have displaced. Asillustrated, route pose 414 has both translated and rotated. Thetranslation can be measured in standard units, such as inches, feet,meters, or any other unit of measurement (e.g., measurements in themetric, US, or other system of measurement) and/or relative/non-absoluteunits, such as ticks, pixels, percentage of range of a sensor, and thelike. Rotation can be measured in degrees, radians, etc. Similarly,route pose 416 has also been translated and/or rotated. Notably, bothroute poses 414 and 416 clear obstacle 402. Since route poses 414 and416 represent discretized locations along a path travelled by robot 202,robot 202 can interpolate between them to determine the path it shouldtake. Interpolated poses 502A-502D illustrate a path travelled betweenroute poses 414 and 416. Notably, robot 202 may also interpolate otherpaths (not illustrated) to move to route poses and/or between routeposes.

Interpolated poses 502A-502D can have associated footprintssubstantially similar to the footprints of one or more of route poses414 and 416. In some cases, as illustrated in FIG. 5, interpolated poses502A-502D can be interpolated route poses. Accordingly, interpolatedposes 502A-502D can represent the position and/or orientation that robot202 would be along a route. Advantageously, this can allow theinterpolated path to guide robot 202 to places where robot 202 wouldfit. Moreover, interpolated poses 502A-502D can be determined such thatthere is no overlap between the footprint of any one of interpolatedposes 502-502D and an object (e.g., obstacle 402, object 210, or object212), thereby avoiding collisions.

Interpolated poses 502A-502D can also be determined taking into accountthe rotation and/or translation to get from route pose 414 to route pose416. For example, robot 202 can determine the pose of route pose 414 andthe pose of route pose 416. Robot 202 can then find the differencebetween the poses of route poses 414 and route poses 416, and thendetermine how to get from the pose of route pose 414 to the pose ofroute pose 416. For example, robot 202 can distribute the rotation andtranslation between interpolated poses 502A-502D such that robot 202would rotate and translate from route pose 414 to route pose 416. Insome cases, robot 202 can distribute the rotation and translationsubstantially equally between interpolated poses 502A-502D. For example,if there are N number of interpolation positions, robot 202 can dividethe difference in location and rotation of the poses of route poses 414and 416 substantially evenly across those N number of interpolationpositions. Alternatively, robot 202 can divide the difference inlocation and/or rotation of the poses of route poses 414 and 416un-evenly across those N number of interpolation positions.Advantageously, even division can allow for robot 202 to travel smoothlyfrom route pose 414 to route pose 416. However, un-even division canallow robot 202 to more easily account for and avoid objects by allowingfiner movements in some areas as compared to others. For example, inorder to avoid an object in which interpolated poses 502A-502D comesnear, robot 202 would have to make a sharp turn. Accordingly, moreinterpolated poses around that turn may be desirable in order to accountfor the turn. In some cases, the number of interpolation positions canbe dynamic, and more or fewer than N number of interpolation positionscan be used as desired.

FIG. 6 is a process flow diagram of an exemplary method 600 foroperation of a robot in accordance with some implementations of thisdisclosure. Block 602 includes creating a map of the environment basedat least in part on collected data. Block 604 includes determining aroute in the map in which the robot will travel. Block 606 includesgenerating one or more route poses on the route, wherein each route posecomprises a footprint indicative of poses of the robot along the routeand each route pose has a plurality of points therein. Block 608includes determining forces on each of the plurality of points of eachroute pose, the forces comprising repulsive forces from one or more ofthe detected points on the one or more objects and attractive forcesfrom one or more of the plurality of points on others of the one or moreroute poses. Block 610 includes repositioning each route pose inresponse to the forces on each point of each route pose. Block 612includes perform interpolation between the one or more repositionedroute poses to generate a collision-free path between the one or moreroute poses for the robot to travel.

FIG. 7 is a process flow diagram of an exemplary method 700 foroperation of a robot in accordance with some implementations of thisdisclosure. Block 702 includes generating a map of the environment usingdata from one or more sensors. Block 704 includes determining a route onthe map, the route including one or more route poses, each route posecomprising a footprint indicative at least in part of a pose, size, andshape of the robot along the route and each route pose having aplurality of points therein. Block 706 includes computing repulsiveforces from a point on an object in the environment onto the pluralityof points of a first route pose of the one or more route poses. Block708 includes repositioning the first route pose in response to at leastthe repulsive force. Block 710 includes performing an interpolationbetween the repositioned first route pose and another of the one or moreroute poses.

As used herein, computer and/or computing device can include, but arenot limited to, personal computers (“PCs”) and minicomputers, whetherdesktop, laptop, or otherwise, mainframe computers, workstations,servers, personal digital assistants (“PDAs”), handheld computers,embedded computers, programmable logic devices, personal communicators,tablet computers, mobile devices, portable navigation aids, J2MEequipped devices, cellular telephones, smart phones, personal integratedcommunication or entertainment devices, and/or any other device capableof executing a set of instructions and processing an incoming datasignal.

As used herein, computer program and/or software can include anysequence or human or machine cognizable steps which perform a function.Such computer program and/or software may be rendered in any programminglanguage or environment including, for example, C/C++, C#, Fortran,COBOL, MATLAB™, PASCAL, Python, assembly language, markup languages(e.g., HTML, SGML, XML, VoXML), and the like, as well as object-orientedenvironments such as the Common Object Request Broker Architecture(“CORBA”), JAVA™ (including J2ME, Java Beans, etc.), Binary RuntimeEnvironment (e.g., BREW), and the like.

As used herein, connection, link, transmission channel, delay line,and/or wireless can include a causal link between any two or moreentities (whether physical or logical/virtual), which enablesinformation exchange between the entities.

It will be recognized that while certain aspects of the disclosure aredescribed in terms of a specific sequence of steps of a method, thesedescriptions are only illustrative of the broader methods of thedisclosure, and may be modified as required by the particularapplication. Certain steps may be rendered unnecessary or optional undercertain circumstances. Additionally, certain steps or functionality maybe added to the disclosed implementations, or the order of performanceof two or more steps permuted. All such variations are considered to beencompassed within the disclosure disclosed and claimed herein.

While the above detailed description has shown, described, and pointedout novel features of the disclosure as applied to variousimplementations, it will be understood that various omissions,substitutions, and changes in the form and details of the device orprocess illustrated may be made by those skilled in the art withoutdeparting from the disclosure. The foregoing description is of the bestmode presently contemplated of carrying out the disclosure. Thisdescription is in no way meant to be limiting, but rather should betaken as illustrative of the general principles of the disclosure. Thescope of the disclosure should be determined with reference to theclaims.

While the disclosure has been illustrated and described in detail in thedrawings and foregoing description, such illustration and descriptionare to be considered illustrative or exemplary and not restrictive. Thedisclosure is not limited to the disclosed embodiments. Variations tothe disclosed embodiments can be understood and effected by thoseskilled in the art in practicing the claimed disclosure, from a study ofthe drawings, the disclosure and the appended claims.

It should be noted that the use of particular terminology whendescribing certain features or aspects of the disclosure should not betaken to imply that the terminology is being re-defined herein to berestricted to include any specific characteristics of the features oraspects of the disclosure with which that terminology is associated.Terms and phrases used in this application, and variations thereof,especially in the appended claims, unless otherwise expressly stated,should be construed as open ended as opposed to limiting. As examples ofthe foregoing, the term “including” should be read to mean “including,without limitation,” “including but not limited to,” or the like; theterm “comprising” as used herein is synonymous with “including,”“containing,” or “characterized by,” and is inclusive or open-ended anddoes not exclude additional, unrecited elements or method steps; theterm “having” should be interpreted as “having at least;” the term “suchas” should be interpreted as “such as, without limitation;” the term‘includes” should be interpreted as “includes but is not limited to;”the term “example” is used to provide exemplary instances of the item indiscussion, not an exhaustive or limiting list thereof, and should beinterpreted as “example, but without limitation;” adjectives such as“known,” “normal,” “standard,” and terms of similar meaning should notbe construed as limiting the item described to a given time period or toan item available as of a given time, but instead should be read toencompass known, normal, or standard technologies that may be availableor known now or at any time in the future; and use of terms like“preferably,” “preferred,” “desired,” or “desirable,” and words ofsimilar meaning should not be understood as implying that certainfeatures are critical, essential, or even important to the structure orfunction of the present disclosure, but instead as merely intended tohighlight alternative or additional features that may or may not beutilized in a particular embodiment. Likewise, a group of items linkedwith the conjunction “and” should not be read as requiring that each andevery one of those items be present in the grouping, but rather shouldbe read as “and/or” unless expressly stated otherwise. Similarly, agroup of items linked with the conjunction “or” should not be read asrequiring mutual exclusivity among that group, but rather should be readas “and/or” unless expressly stated otherwise. The terms “about” or“approximate” and the like are synonymous and are used to indicate thatthe value modified by the term has an understood range associated withit, where the range can be ±20%, ±15%, ±10%, ±5%, or ±1%. The term“substantially” is used to indicate that a result (e.g., measurementvalue) is close to a targeted value, where close can mean, for example,the result is within 80% of the value, within 90% of the value, within95% of the value, or within 99% of the value. Also, as used herein“defined” or “determined” can include “predefined” or “predetermined”and/or otherwise determined values, conditions, thresholds,measurements, and the like.

What is claimed is:
 1. A robot comprising: one or more sensorsconfigured to collect data about an environment including detectedpoints on one or more objects in the environment; and a controllerconfigured to: create a map of the environment based at least in part onthe collected data; determine a route in the map in which the robot willtravel; generate one or more route poses on the route, wherein eachroute pose comprises a footprint indicative of poses of the robot alongthe route and each route pose has a plurality of points disposedtherein; determine forces on each of the plurality of points of eachroute pose, the forces comprising repulsive forces from one or more ofthe detected points on the one or more objects and attractive forcesfrom one or more of the plurality of points on others of the one or moreroute poses; reposition one or more route poses in response to theforces on each point of the one or more route poses; and performinterpolation between one or more route poses to generate acollision-free path between the one or more route poses for the robot totravel.
 2. The robot of claim 1, wherein: the one or more route posesform a sequence in which the robot travels along the route; and theinterpolation comprises a linear interpolation between sequential onesof the one or more route poses.
 3. The robot of claim 1, wherein theinterpolation generates one or more interpolation route poses havingsubstantially similar footprints to the footprint of each route pose. 4.The robot of claim 1, wherein the determination of the forces on eachpoint of the one or more route poses further comprises a computation ofa force function that associates, at least in part, the forces on eachpoint of each route pose with one or more characteristics of objects inthe environment.
 5. The robot of claim 4, wherein the one or morecharacteristics includes one or more of distance, shape, material, andcolor.
 6. The robot of claim 4, wherein: the force function associateszero repulsive force exerted by a first detected point on a first objectwhere a distance between the first detected point and a second point ofa first route pose is above a predetermined distance threshold.
 7. Therobot of claim 1, wherein the footprint of each route pose hassubstantially similar size and shape as the footprint of the robot. 8.The robot of claim 1, wherein the robot comprises a floor cleaner.
 9. Amethod for dynamic navigation of a robot in an environment, comprising:generating a map of the environment using data from one or more sensors;determining a route on the map, the route including one or more routeposes, each route pose comprising a footprint indicative at least inpart of a pose and a shape of the robot along the route and each routepose having a plurality of points disposed therein; computing repulsiveforces from a point on an object in the environment onto the pluralityof points of a first route pose of the one or more route poses;repositioning the first route pose in response to at least the repulsiveforces; and performing an interpolation between the repositioned firstroute pose and another of the one or more route poses.
 10. The method ofclaim 9, further comprising determining attractive forces from a pointon another of the one or more route poses exerted on the plurality ofpoints of the first route pose.
 11. The method of claim 9, furthercomprising: detecting a plurality of objects in the environment with theone or more sensors, each of the plurality of objects having detectedpoints; and defining a force function, the force function computingrepulsive forces exerted by each of the detected points of the pluralityof objects on the plurality of points of the first route pose, whereineach repulsive force comprises a vector.
 12. The method of claim 11,wherein repositioning the first route pose comprises calculating aminimum of the force function.
 13. The method of claim 9, wherein therepositioning of the first route pose comprises translating and rotatingthe first route pose.
 14. The method of claim 9, wherein theinterpolation comprises: generating an interpolation route pose having afootprint substantially similar to the shape of the robot; anddetermining a translation and rotation of the interpolation route posebased at least on a collision-free path between the translated androtated first route pose and the another of the one or more route poses.15. The method of claim 9, further comprising computing a magnitude ofthe repulsive forces as proportional to a distance between the point onthe object and each of the plurality of points of the first route poseif the point on the object is outside of the footprint of the firstroute pose.
 16. The method of claim 9, further comprising computing amagnitude of the repulsive forces as inversely proportional to adistance between the point on the object and each of the plurality ofpoints of the first route pose if the point on the object is inside thefootprint of the first route pose.
 17. The method of claim 9, furthercomprising computing the torque forces onto the plurality of points ofthe first route pose due to the repulsive forces.
 18. A non-transitorycomputer-readable storage apparatus having a plurality of instructionsstored thereon, the instructions being executable by a processingapparatus to operate a robot, the instructions configured to, whenexecuted by the processing apparatus, cause the processing apparatus to:generate a map of an environment using data from one or more sensors;determine a route on the map, the route comprising one or more routeposes, each route pose comprising a footprint indicative at least inpart of a pose and a shape of the robot along the route and each routepose having a plurality of points disposed therein; and computerepulsive forces from a point on an object in the environment onto theplurality of points of a first route pose of the one or more routeposes.
 19. The non-transitory computer-readable storage apparatus ofclaim 18, further comprising one or more instructions, which whenexecuted by the processing apparatus, further cause the processingapparatus to determine attractive forces from a point on another of theone or more route poses exerted on the plurality of points of the firstroute pose.
 20. The non-transitory computer-readable storage apparatusof claim 18, further comprising one or more instructions, which whenexecuted by the processing apparatus, further cause the processingapparatus to determine torque forces from a point on another of the oneor more route poses exerted on the plurality of points of the firstroute pose.